#si pas le même redpertoire mettre -I a l'appelle de perl suivi du repertoire avec les packages
use strict;
use warnings;
use File::Basename;
use File::Spec;

my $directoryName = $ARGV[0];
opendir(DIR, $directoryName) || die "Impossible d'ouvrir le dossier $directoryName\n";

my @files = grep { /.txt$/ } readdir(DIR);
closedir DIR;
my ($mot, $cat, $lemme);
my %index = ();
my $filename;
for my $file (@files) {
	open (TT, "\$TTDIR/tree-tagger-french $directoryName/$file |") || die $!;
	$filename=$file;
	#retirer le .txt de la fin du fichier
	$filename=basename($file,(".txt"));
	#$filename=~s/[.]txt$//;
	my $pos=0;
	while (my $ligne = <TT>){
		if($ligne=~ /^(.*)\t(.*)\t(.*)$/){
			$mot=$1; $cat=$2; $lemme=$3;
#print"$ligne";
			if(($cat !~ /^PUN/ )&&($cat ne "SENT")&&($cat ne "NUM")){
				if($lemme eq "<unknown>"){
					$lemme=$mot;
}
				if($lemme eq "\@card\@"){
					$lemme=$mot;
}
				$lemme=lc $lemme;
				my $ref_hDoc;
				if(exists($index{$lemme})){
					$ref_hDoc=$index{$lemme};
				}else{
					%{$ref_hDoc}=();
					$index{$lemme}=$ref_hDoc;
				}
				
				my $ref_hPos;
				if(exists($ref_hDoc->{$filename})){
					$ref_hPos=$ref_hDoc->{$filename};
				}else{
					@{$ref_hPos}=();
					$ref_hDoc->{$filename}=$ref_hPos;
				}
				
				push @{$ref_hPos} , $pos;
#print"$lemme\t$filename\t$pos : @{$ref_hPos}\n";
#foreach my $val (@{$ref_hPos}){
#	print "$val\n";
#}
			}
			$pos++;
		}
	}
	close TT;
};

$directoryName=~s/.*[\/]([^\/]+)$/$1/;
open (OUT, ">./index_$directoryName.txt") || die $!;
for my $klemme(sort { $a cmp $b } keys(%index)){
	print OUT "#lemme\t$klemme\n";
	my %hDoc = %{$index{$klemme}};
	for my $kdoc (keys(%hDoc)){
		print OUT "#doc\t$kdoc\n";
		my @hPos=@{$hDoc{$kdoc}};
		for my $val (@hPos){
			print OUT "$val\n";
		}
	}
}
close OUT;
